名字空间别名
如果用户给他们的名字空间取很短的名字,不同名字空间的名字也可能出现冲突:
namespace A { // 短名字,(最终)将冲突
// ...
}
A::String s1 = "Grieg";
A::String s2 = "Nielsen";
然而长名字在实际代码中又很不实用:
namespace American_Telephone_and_Telegraph { // 太长
// ...
}
American_Telephone_and_Telegraph::String s3 = "Grieg";
American_Telephone_and_Telegraph::String s4 = "Nielsen";
这种两难境地可以通过为长名字提供较短的别名的方式解决:
// 为名字空间提供较短的别名:
namespace ATT = American_Telephone_and_Telegraph;
ATT::String s3 = "Grieg";
ATT::String s4 = "Nielsen";
名字空间别名也使用户能够引用“某一个库”,并通过惟一的一个声明来定义那个库到底是什么。例如,
namespace Lib = Foundation_library_v2r11;
// ...
Lib::set s;
Lib::String s5 = "Sibelius";
这将使得用库的一个版本取代另一个的工作得到极大的简化。通过使用Lib而不是直接用Foundation_bibrary_v2r11,当你需要更新到版本“v3r02”时,只要修改别名Lib的初始化并重新编译。当然,在另一方面,过多使用别名(无论什么形式)也会引起混乱。
🔚